home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 05 / 4 / DISK0543.ZIP / HALLEY.BAS < prev    next >
BASIC Source File  |  1985-06-02  |  6KB  |  216 lines

  1. 10   REM -----------COMET EPHEMERIS -----------
  2. 20   PI = 3.14159
  3. 30   CO$ = "COMET HALLEY"
  4. 40   PH = 1986.11
  5. 50   PL = 170.011
  6. 60   AN = 58.1453
  7. 70   PY = 76.0081
  8. 80   SM = 17.9435
  9. 90   EO = .967267
  10. 100  IO = 162.239
  11. 110  CLS:PRINT :PRINT :PRINT
  12. 120  REM ----------------------------------------
  13. 130  PRINT "              ";CO$
  14. 140  PRINT "- - - - - - - - - - - - - - - - - - -"
  15. 150  PRINT "      EPHEMERIS FOR DATES"
  16. 160  PRINT "     BETWEEN 1946 AND 2026"
  17. 170  PRINT "        BY ROGER BROWNE"
  18. 180  PRINT "  THIS VERSION FROM ASTRONOMY MAGAZINE"
  19. 190  PRINT "        FEBRUARY, 1985 "
  20. 200  PRINT "  COPIED BY CHRIS SPRATT (IHW)"
  21. 210  PRINT "    VICTORIA, BC (JUNE,1985)"
  22. 220  REM ________________________________________
  23. 230  REM           INPUT THE DATE
  24. 240  REM ----------------------------------------
  25. 250  PRINT "INPUT YEAR"
  26. 260  INPUT Y
  27. 270  IF Y < 1946 OR Y > 2026 THEN GOTO 250
  28. 280  PRINT "INPUT MONTH"
  29. 290  INPUT M
  30. 300  IF M < 1 OR M > 12 THEN GOTO 280
  31. 310  PRINT "INPUT DAY"
  32. 320  INPUT D
  33. 330  PRINT
  34. 340  REM ----------------------------------------
  35. 350  REM     CALCULATION FOR THE COMET
  36. 360  REM ----------------------------------------
  37. 370  X = PH
  38. 380  IF Y >= 1986 THEN Z = 1984
  39. 390  IF Y < 1986 THEN Z = 1988
  40. 400  IF Y > = 1986 THEN S  = 0
  41. 410  IF Y < 1986 THEN S = 1
  42. 420  GOSUB 1840
  43. 430  DS = N
  44. 440  B = (360/PY)*(N/365.25)
  45. 450  K = B
  46. 460  GOSUB 1990
  47. 470  B = (K*PI)/180
  48. 480  E = B
  49. 490  Y1 = EO
  50. 500  Q = E-(Y1*SIN(E))-B
  51. 510  IF ABS(Q) <=.000017 THEN GOTO 550
  52. 520  U = Q/(1-(Y1*COS(E)))
  53. 530  E = E-U
  54. 540  GOTO 500
  55. 550  V = (SQR((1+Y1)/(1-Y1))*TAN(E/2))
  56. 560  V = 2*ATN(V)
  57. 570  V1 = (V*180)/PI
  58. 580  L = V1 + PL
  59. 590  R = SM*(1-(Y1*Y1))/(1+Y1*COS(V))
  60. 600  F = L -AN
  61. 610  F2 = IO
  62. 620  F1 = (F*PI)/180
  63. 630  F2 = (F2*PI)/180
  64. 640  I = (SIN(F1)*SIN(F2))
  65. 650  I = ATN(I/SQR(-I*I+1))
  66. 660  P = ATN(TAN(F1)*COS(F2))
  67. 670  P1 = (P*180)/PI + AN
  68. 680  IF F >=90 AND F <=270 THEN P1 = P1 +180
  69. 690  IF P1 < 0 THEN P1 = P1 + 360
  70. 700  P = (P1 * PI)/180
  71. 710  R2 = R*COS(I)
  72. 720  REM --------------------------------------
  73. 730  REM     CALCULATIONS FOR THE EARTH
  74. 740  REM --------------------------------------
  75. 750  X = 1975
  76. 760  IF Y >= X THEN Z = 1972
  77. 770  IF Y<X THEN Z = 1976
  78. 780  IF Y>=X THEN S =0
  79. 790  IF Y < X THEN S = 1
  80. 800  GOSUB 1840
  81. 810  T = (360/365.25)*(N/1.00004)
  82. 820  K = T
  83. 830  GOSUB 1990
  84. 840  T = K
  85. 850  T1 = (T*PI)/180
  86. 860  C = .01672
  87. 870  J = T +(360/PI)*C*SIN(T1 - .051943)
  88. 880  J = J + 99.5343
  89. 890  IF J > 360 THEN J = J - 360
  90. 900  IF J < 0 THEN J = J + 360
  91. 910  H =((J - 102.51044#)*PI)/180
  92. 920  R1 = (1-C*C)/(1+C*COS(H))
  93. 930  REM ----------------------------------
  94. 940  REM   COMPUTE ECLIPTIC COORDINATES
  95. 950  REM ----------------------------------
  96. 960  U1 = ((P1-J)*PI)/180
  97. 970  U2 = ((J - P1)*PI)/180
  98. 980  IF R2 < R1 THEN GOTO 1040
  99. 990  Q1 = (R1 * SIN(U1))
  100. 1000  Q1 = Q1/(R2-(R1*COS(U1)))
  101. 1010  Q1 = ATN(Q1)
  102. 1020  Q2 = (Q1*180)/PI+P1
  103. 1030  GOTO 1080
  104. 1040  Q3 = (R2 *SIN(U2))
  105. 1050  Q3 = Q3/(R1 - (R2*COS(U2)))
  106. 1060  Q3 = ATN(Q3)
  107. 1070  Q2 = (Q3 * 180)/PI + J + 180
  108. 1080  IF Q2 > 360 THEN Q2 = Q2 - 360
  109. 1090  IF Q2 < 0 THEN Q2 = Q2 + 360
  110. 1100  Q4 = (Q2 * PI)/180
  111. 1110  Q5 = (R2 * TAN(I)*SIN(Q4-P))
  112. 1120  Q5 = Q5/(R1*SIN(U1))
  113. 1130  Q5 = ATN(Q5)
  114. 1140  REM -----------------------------------
  115. 1150  REM    CONVERT TO EQUATORIAL COORDS
  116. 1160  REM -----------------------------------
  117. 1170  E1 = .40893064#
  118. 1180  L1 = (SIN(Q5)*COS(E1))
  119. 1190  L1 = L1 + (COS(Q5) * SIN(E1)*SIN(Q4))
  120. 1200  M1 = ATN(L1/SQR(-L1*L1+1))
  121. 1210  Y2 = (M1 * 180)/PI
  122. 1220  B1 = (TAN(Q4)*COS(E1))
  123. 1230  B1 = B1 - ((TAN(Q5)*SIN(E1))/COS(Q4))
  124. 1240  G = ATN(B1)
  125. 1250  H1 = (G*180)/PI
  126. 1260  I1 = INT(Q2/90)
  127. 1270  J1 = INT(H1/90)
  128. 1280  IF I1 - J1 = 4 OR I1 - J1 = 1 THEN H1 = H1 + 360
  129. 1290  IF I1 - J1 = 2 OR I1 - J1 = 3 THEN H1 = H1 + 180
  130. 1300  IF I1 - J1 = -4 THEN H1 = H1 + 360
  131. 1310  IF I1 - J1 = -2 THEN H1 = H1 - 180
  132. 1320  N1 = H1/15
  133. 1330  W = INT((N1 - INT(N1))*60 + .5)
  134. 1340  IF W = 60 THEN N1 = N1 + 1
  135. 1350  IF W = 60 THEN W = 0
  136. 1360  K1 = ABS(Y2)
  137. 1370  W1 = INT((K1-INT(K1))*60 + .5)
  138. 1380  IF W1 = 60 THEN G1 = G1 + 1
  139. 1390  IF W1 = 60 THEN W1 = 0
  140. 1400  G1 = INT(K1)
  141. 1410  IF  Y2<0 AND G1<1 THEN W1 = -W1
  142. 1420  D1 = R1 * R1 + R2 * R2
  143. 1430  D1 = D1 - (2 *R1*R2*COS(U1))
  144. 1440  D2 = SQR(D1)
  145. 1450  R3 = D2/COS(I)
  146. 1460  K9 = R
  147. 1470  GOSUB 2100
  148. 1480  R = K9
  149. 1490  K9 = R3/10
  150. 1500  GOSUB 2100
  151. 1510  R3 = K9 * 10
  152. 1520  M0 = 4.1 : N = 3.1
  153. 1530  IF DS < 0 THEN M0 = 5 : N = 4.44
  154. 1540  MA = M0 + 5 * .4343* LOG(R3)
  155. 1550  MA = MA + N * 2.5 * .4343 * LOG(R)
  156. 1560  MA = (INT(10*MA))/10
  157. 1570  IF Y2 < 0 THEN G1 = -G1
  158. 1580  REM -----------------------------------
  159. 1590  REM  PRINT EPHEMERIS FOR DATE
  160. 1600  REM -----------------------------------
  161. 1610  CLS:PRINT :PRINT :PRINT
  162. 1620  PRINT " -----------------------------------"
  163. 1630  PRINT " DATA FOR "+CO$
  164. 1640  PRINT " DATE: M/D/Y = ";M;"/";D;"/";Y
  165. 1650  PRINT " DAYS TO PERIHELION ";INT(DS)
  166. 1660  PRINT
  167. 1670  PRINT  "COORDINATES:"
  168. 1680  PRINT  " RA:"; INT(N1); "HRS";W; "MIN"
  169. 1690  PRINT  "DEC:";G1;"DEG";W1;"MIN"
  170. 1700  PRINT
  171. 1710  PRINT "DISTANCES"
  172. 1720  PRINT " COMET TO SUN"; R; "AU"
  173. 1730  PRINT " COMET TO EARTH";R3; "AU"
  174. 1740  PRINT
  175. 1750  PRINT  "PREDICTED MAG";MA
  176. 1760  PRINT  "------------------------------------"
  177. 1770  PRINT  "PRESS 0 FOR ANOTHER DATE OR 1 TO EXIT"
  178. 1780  IF INKEY$ = "0" THEN GOTO 1800
  179. 1785  IF INKEY$ = "1" THEN GOTO 2140
  180. 1790  GOTO 1780
  181. 1800  PRINT
  182. 1810  GOTO 250
  183. 1820  REM -----------------------------------------
  184. 1830  REM SUBROUTINE: DAYS TO PERIHELION
  185. 1840  A = (Y-Z)/4
  186. 1850  A1 = INT(A + S)
  187. 1860  N = 365*(Y-X+S)+A1
  188. 1870  IF INT(A) <> A THEN GOTO 1890
  189. 1880  IF (M2 = 2 AND D<29) OR M = 1 THEN N = N - 1
  190. 1890  IF M > 2 THEN GOTO 1930
  191. 1900  M2 = M - 1
  192. 1910  M2 = 31 * M2
  193. 1920  GOTO 1950
  194. 1930  M2 = M + 1
  195. 1940  M2 = INT(30.6*M2)-63
  196. 1950  N = N+M2+D-365*S
  197. 1960  RETURN
  198. 1970  REM ------------------------------------------
  199. 1980  REM: PLACE BETWEEN 0 AND 360 DEG
  200. 1990  IF K < 0 THEN GOTO 2010
  201. 2000  IF K > 360 THEN GOTO 2040
  202. 2010  K = K + 360
  203. 2020  IF K>= 0 THEN GOTO  2070
  204. 2030  GOTO 2010
  205. 2040  K = K - 360
  206. 2050  IF K<= 360 THEN GOTO  2070
  207. 2060  GOTO  2040
  208. 2070  RETURN
  209. 2080  REM ------------------------------------------
  210. 2090  REM: ROUND OFF SUBROUTINE
  211. 2100  K9 = K9 * 1000
  212. 2110  K9 = INT(K9 + .5)
  213. 2120  K9 = K9/1000
  214. 2130  RETURN
  215. 2140  END
  216.